#include "BulletDynamics/Character/btKinematicCharacterController.h"
#ifdef __cplusplus
extern "C" {
#endif
btKinematicCharacterController* bullet_NewbtKinematicCharacterController(btPairCachingGhostObject* ghostObject,btConvexShape* convexShape,double stepHeight,btVector3* up){
	btPairCachingGhostObject * c_arg_ghostObject=(btPairCachingGhostObject *)(void*)(ghostObject);
	btConvexShape * c_arg_convexShape=(btConvexShape *)(void*)(convexShape);
	btScalar c_arg_stepHeight=stepHeight;
	btVector3 const& c_arg_up=(btVector3 const&)(*up);
	btKinematicCharacterController* wrap_out = new btKinematicCharacterController(c_arg_ghostObject,c_arg_convexShape,c_arg_stepHeight,c_arg_up);
	return wrap_out;
}

void bullet_btKinematicCharacterController_applyImpulse(btKinematicCharacterController* c_this,btVector3* v){
	btVector3 const& c_arg_v=(btVector3 const&)(*v);
	c_this->applyImpulse(c_arg_v);
}

double bullet_btKinematicCharacterController_getAngularDamping(btKinematicCharacterController* c_this){
	btScalar c_out = c_this->getAngularDamping();
	double wrap_out = (c_out);
	return wrap_out;
}

double bullet_btKinematicCharacterController_getFallSpeed(btKinematicCharacterController* c_this){
	btScalar c_out = c_this->getFallSpeed();
	double wrap_out = (c_out);
	return wrap_out;
}

btPairCachingGhostObject* bullet_btKinematicCharacterController_getGhostObject(btKinematicCharacterController* c_this){
	btPairCachingGhostObject * c_out = c_this->getGhostObject();
	btPairCachingGhostObject* wrap_out = (btPairCachingGhostObject*)(void*)(c_out);
	return wrap_out;
}

btVector3* bullet_btKinematicCharacterController_getGravity(btKinematicCharacterController* c_this){
	btVector3 c_out = c_this->getGravity();
	btVector3* wrap_out = new btVector3(c_out);
	return wrap_out;
}

double bullet_btKinematicCharacterController_getJumpSpeed(btKinematicCharacterController* c_this){
	btScalar c_out = c_this->getJumpSpeed();
	double wrap_out = (c_out);
	return wrap_out;
}

double bullet_btKinematicCharacterController_getLinearDamping(btKinematicCharacterController* c_this){
	btScalar c_out = c_this->getLinearDamping();
	double wrap_out = (c_out);
	return wrap_out;
}

double bullet_btKinematicCharacterController_getMaxPenetrationDepth(btKinematicCharacterController* c_this){
	btScalar c_out = c_this->getMaxPenetrationDepth();
	double wrap_out = (c_out);
	return wrap_out;
}

double bullet_btKinematicCharacterController_getMaxSlope(btKinematicCharacterController* c_this){
	btScalar c_out = c_this->getMaxSlope();
	double wrap_out = (c_out);
	return wrap_out;
}

double bullet_btKinematicCharacterController_getStepHeight(btKinematicCharacterController* c_this){
	btScalar c_out = c_this->getStepHeight();
	double wrap_out = (c_out);
	return wrap_out;
}

btVector3* bullet_btKinematicCharacterController_getUp(btKinematicCharacterController* c_this){
	btVector3 const& c_out = c_this->getUp();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

void bullet_btKinematicCharacterController_setAngularDamping(btKinematicCharacterController* c_this,double d){
	btScalar c_arg_d=d;
	c_this->setAngularDamping(c_arg_d);
}

void bullet_btKinematicCharacterController_setFallSpeed(btKinematicCharacterController* c_this,double fallSpeed){
	btScalar c_arg_fallSpeed=fallSpeed;
	c_this->setFallSpeed(c_arg_fallSpeed);
}

void bullet_btKinematicCharacterController_setGravity(btKinematicCharacterController* c_this,btVector3* gravity){
	btVector3 const& c_arg_gravity=(btVector3 const&)(*gravity);
	c_this->setGravity(c_arg_gravity);
}

void bullet_btKinematicCharacterController_setJumpSpeed(btKinematicCharacterController* c_this,double jumpSpeed){
	btScalar c_arg_jumpSpeed=jumpSpeed;
	c_this->setJumpSpeed(c_arg_jumpSpeed);
}

void bullet_btKinematicCharacterController_setLinearDamping(btKinematicCharacterController* c_this,double d){
	btScalar c_arg_d=d;
	c_this->setLinearDamping(c_arg_d);
}

void bullet_btKinematicCharacterController_setMaxJumpHeight(btKinematicCharacterController* c_this,double maxJumpHeight){
	btScalar c_arg_maxJumpHeight=maxJumpHeight;
	c_this->setMaxJumpHeight(c_arg_maxJumpHeight);
}

void bullet_btKinematicCharacterController_setMaxPenetrationDepth(btKinematicCharacterController* c_this,double d){
	btScalar c_arg_d=d;
	c_this->setMaxPenetrationDepth(c_arg_d);
}

void bullet_btKinematicCharacterController_setMaxSlope(btKinematicCharacterController* c_this,double slopeRadians){
	btScalar c_arg_slopeRadians=slopeRadians;
	c_this->setMaxSlope(c_arg_slopeRadians);
}

void bullet_btKinematicCharacterController_setStepHeight(btKinematicCharacterController* c_this,double h){
	btScalar c_arg_h=h;
	c_this->setStepHeight(c_arg_h);
}

void bullet_btKinematicCharacterController_setUp(btKinematicCharacterController* c_this,btVector3* up){
	btVector3 const& c_arg_up=(btVector3 const&)(*up);
	c_this->setUp(c_arg_up);
}

void bullet_btKinematicCharacterController_setUseGhostSweepTest(btKinematicCharacterController* c_this,bool useGhostObjectSweepTest){
	bool c_arg_useGhostObjectSweepTest=useGhostObjectSweepTest;
	c_this->setUseGhostSweepTest(c_arg_useGhostObjectSweepTest);
}

#ifdef __cplusplus
}
#endif
